Location-based healthcare collaboration, data management and access control

ABSTRACT

The locations of electronic devices in an institutional facility are determined based on interaction with the wireless mobile devices of users who roam though the facility and interact with (or are detected by) the devices.

RELATED APPLICATION

This application claims the benefit of and priority to U.S. Provisional Patent Application Nos. 62/081,820, filed Nov. 19, 2014, and 62/183,793, filed Jun. 24, 2015, the entire disclosures of which are hereby incorporated by reference.

TECHNICAL FIELD

The invention relates generally to healthcare information technology, and in particular to systems and methods for location-based management of data, access control, and clinical collaboration.

BACKGROUND

In a busy healthcare environment, such as a hospital, clinicians roam frequently among patients, floors and buildings. Each time a clinician reaches a new location, she may require access to patient information or other medical data maintained by the facility (or elsewhere). That data may be accessed via a local, typically shared workstation, or via a handheld wireless device, such as a “smart phone” or tablet capable of hosting applications and establishing telecommunications, Internet and/or local intranet connections.

In particular, medical institutions from hospitals to physician practice groups to testing centers maintain diverse electronic medical records (EMR) systems, which collectively form the healthcare information backbone. EMR systems allow clinicians access to medical information maintained in various back-end systems. The typical workflow when a physician interacts with a patient involves first logging onto the computer system, then launching and logging into one or more EMR applications, selecting the right patient record, verifying that the record matches the patient, reviewing results (often from different sources), checking up on medical references, entering orders or prescriptions (e.g., using computerized physician order entry (CPOE) applications and ePrescribing), and/or charting patient progress. All of these activities may involve the same patient but different applications, and in some cases multiple separate applications for a single patient-specific activity.

Moreover, healthcare records are protected by strict privacy laws (such as the Health Insurance Portability and Accountability Act, or HIPAA), regulatory regimes, and institutional access policies. Accordingly, when a clinician moves from place to place, he may be required to log on to a new terminal or device, and because of data-access restrictions, the log-on procedure may involve cumbersome and/or multiple authentication modalities. Depending on system configuration, the clinician may be required to re-launch the applications that were running on the previously used device. Therefore, there is a need for systems that streamline or avoid authentication procedures and provision a workspace for clinicians on the move, and this, in turn, may depend on knowledge of a clinician's physical location within a facility. Knowledge of a particular individual's location may be obtained in various ways, including from the location of a device with which she interacts—assuming, of course that the device location is accurately known. In a large facility, even seemingly “fixed” devices such as workstations can be moved periodically, and mobile workstations obviously change location frequently.

For example, the location of a device may be specified by global-positioning system (GPS) coordinates, and if the node is equipped with a GPS chipset, its location can be updated as it is moved. Unfortunately, many workstations and other devices are not GPS-equipped, and indeed, GPS tracking is not always possible even for devices that are GPS-enabled; for example, GPS often does not work well within buildings.

SUMMARY

Embodiments of the present invention focus on determining the location of computational or other devices with which clinicians interact. These devices, which include workstations, thick or thin client devices, kiosks, and network-connected medical devices are herein referred to collectively as “nodes.” In general, a node is able to access, via a network, one or more data stores that include information (e.g., EMR) of interest to clinicians. The term “network” is herein used broadly to connote wired or wireless networks of computers or telecommunications devices (such as wired or wireless telephones, tablets, etc.). For example, a computer network may be a local area network (LAN) or a wide area network (WAN). When used in a LAN networking environment, computers may be connected to the LAN through a network interface or adapter. When used in a WAN networking environment, computers typically include a modem or other communication mechanism. Modems may be internal or external, and may be connected to the system bus via the user-input interface, or other appropriate mechanism. Networked computers may be connected over the Internet, an Intranet, Extranet, Ethernet, or any other system that provides communications. Some suitable communications protocols include TCP/IP, UDP, or OSI, for example. For wireless communications, communications protocols may include IEEE 802.11x (“Wi-Fi”), Bluetooth, Zigbee, IrDa, near-field communication (NFC), or other suitable protocol. Furthermore, components of the system may communicate through a combination of wired or wireless paths, and communication may involve both computer and telecommunications networks. For example, a user may establish communication with a server using a “smart phone” via a cellular carrier's network (e.g., authenticating herself to the server by voice recognition over a voice channel); alternatively, she may use the same smart phone to authenticate to the same server via the Internet, using TCP/IP over the carrier's switch network or via Wi-Fi and a computer network connected to the Internet.

In accordance herewith, a node's location is determined based on its location relative to one or more other nodes and patterns of user interactivity, so that GPS information is unnecessary. Thus, in a first aspect, the invention pertains to a method of establishing a location of a device in an institutional space having a physical layout including walkable paths and obstructions. In various embodiments, the method comprises the steps of, at a first node, registering a proximity event of a user; subsequently registering a proximity event of the user at a second node physically displaced from the first node; and computationally inferring a location of the first node based on an elapsed time between the proximity events of the user at the first and second nodes, and at least one of (i) the physical layout or (ii) time-separated detections of users at the first and second nodes and other nodes. For example, the location may be inferred based on a plurality of first elapsed times each between proximity events of at least one user at the first node and at the second node, a plurality of second elapsed times each between proximity detections of at least one user at the first node and at a third node, and a plurality of third elapsed times each between proximity detections of at least one user at the second node and at a fourth node. For each of the pluralities of elapsed times, a distance between the corresponding nodes may be estimated based on a minimum of the elapsed times and/or a plurality of substantially equal elapsed times.

Proximity events may comprise wireless communication between a node and a fitness device worn by the user. The proximity event at the first node may be the user's departure therefrom and the proximity event at the second is the user's arrival thereat.

Computationally inferring a location of the first node may involve downloading data from the fitness device, where the data includes a recent average walking speed of the user, and/or determining, from the downloaded data, when the user began walking from the first node to the second node, when the user arrived at the second node, and whether the user followed an uninterrupted path therebetween. The time when the user departs from the first node may be established by the last recorded user interaction with the first node. The time when the user arrives at the second node may be established by detection of the user's proximity to the second node and/or by detection of the user's initial interaction with the second node.

Proximity events may be or comprise detecting a received signal strength of a wireless device of the user. For example, the received signal strength may be used to determine a departure of the user from the first node and an arrival of the user at the second node.

In some embodiments, absolute spatial locations of the nodes are inferred. In some cases, the second node has a known location, but in other cases, none of the nodes has a known location. The inferring step may comprise optimizing the fit among estimated distances between pairs of nodes and constraining the locations based on the physical layout.

In another aspect, the invention pertains to a system for inferring locations of devices in an institutional space having a physical layout including walkable paths and obstructions. In various embodiments, the system comprises a plurality of nodes, a plurality of wireless user devices, and a location server including a location database. Each of the nodes comprises a wireless interface for interaction with a wireless mobile device of a user, a processor, and a computer memory storing agent instructions for execution by the processor. The agent instructions, when executed, cause the node to register proximity events of users and report the events to the location server. The location server is configured to receive proximity events of the nodes and, based thereon and on and at least one of (i) the physical layout or (ii) time-separated detections of users at a plurality of the nodes, to computationally infer locations of at least some of the nodes.

For example, the location may be inferred based on a plurality of first elapsed times each between proximity events of at least one user at a first node and at a second node, a plurality of second elapsed times each between proximity detections of at least one user at the first node and at a third node, and a plurality of third elapsed times each between proximity detections of at least one user at the second node and at a fourth node. For each of the pluralities of elapsed times, a distance between the corresponding nodes may be estimated based on a minimum of the elapsed times and/or a plurality of substantially equal elapsed times.

Proximity events may comprise wireless communication between a node and a fitness device worn by the user. The proximity event at the first node may be the user's departure therefrom and the proximity event at the second is the user's arrival thereat. The nodes may be configured to download data from the fitness device, and the data may include a recent average walking speed of the user.

The location server may be configured to determine, from the downloaded data, when a user began walking from a first node to a second node, when the user arrived at the second node, and whether the user followed an uninterrupted path therebetween. In some embodiments, proximity events are user departures from a node and arrivals at another node; for example, the time when the user departs from a first node may be established by the last recorded user interaction with the first node. The time when the user arrives at a second node may be established by detection of the user's proximity to the second node and/or by detection of the user's initial interaction with the second node.

Proximity events may be or comprise detecting a received signal strength of a wireless device of the user. For example, the location server may be configured to use the received signal strength to determine a departure of the user from a first node and an arrival of the user at a second node. Alternatively or in addition, the location server may be configured to infer absolute spatial locations of the nodes and/or to optimize a fit among estimated distances between pairs of nodes and constrain the locations based on the physical layout.

These and other objects, along with advantages and features of the present invention herein disclosed, will become more apparent through reference to the following description, the accompanying drawings, and the claims. Furthermore, it is to be understood that the features of the various embodiments described herein are not mutually exclusive and may exist in various combinations and permutations. Reference throughout this specification to “one example,” “an example,” “one embodiment,” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the example is included in at least one example of the present technology. Thus, the occurrences of the phrases “in one example,” “in an example,” “one embodiment,” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same example. Furthermore, the particular features, routines, steps, or characteristics may be combined in any suitable manner in one or more examples of the technology. As used herein, the terms “approximately” and “substantially” mean±10%, and in some embodiments, ±5%.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference characters generally refer to the same parts throughout the different views. Also, the drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the following description, various embodiments of the present invention are described with reference to the following drawings, in which:

FIG. 1 schematically illustrates a node in accordance with embodiments of the invention.

FIG. 2 schematically illustrates a server in accordance with embodiments of the invention.

DETAILED DESCRIPTION

Refer first to FIG. 1, which illustrates a representative node 100. The node 100 may be a workstation (e.g., a general-purpose personal computer running suitable software), a thick or thin client device, a kiosk, a network-connected medical device, or any other device with which clinicians and other users interact, and which may be moved from time to time within an institutional setting. Node 100 typically includes a processor 102 (e.g., a CPU microprocessor) and associated system memory 104, a network interface 106 (for connection to the institutional network 110 and/or the Internet), and, usually, one or more non-volatile digital storage elements (such as a hard disk, CD, DVD, USB memory key, etc.) and associated drives. Further, workstation 100 includes user input/output devices such as a display screen 112 and conventional tactile input devices 115 such as keyboard and mouse or touch pad. A wireless interface 117, which may be separate from or implemented within network interface 106, facilitates wireless communication with user mobile devices. In some embodiments, workstation 100 includes a received signal-strength indication (RSSI) circuit 120, which, again, may be implemented within or separate from the wireless interface 117. The various components communicate with each other via one or more buses 125.

In use, processor 102 executes one or more computer programs (conceptually illustrated as program modules) stored in system memory 104. An operating system 130 (such as, e.g., MICROSOFT WINDOWS, UNIX, LINUX, iOS, or ANDROID) provides low-level system functions, such as file management, resource allocation, and routing of messages from and to hardware devices (such as I/O device(s) 115) and one or more higher-level user applications 132 (such as EMR applications, office programs, a web browser, etc.). The user interacts with the application(s) 132 by providing input via the input devices, e.g., by typing on the keyboard, moving the mouse, or clicking with the mouse on a displayed control element such as a scroll bar.

A location agent 135 receives data relevant to the presence or proximity of a user (and/or the proximity of a wireless device 140 of the user) and additional data, the nature of which depends on the particular embodiment, relevant to location determination. The wireless devices 140 may be or include, for example, an APPLE IPAD, a SAMSUNG GALAXY, a WINDOWS tablet, or any other type of tablet with wireless communication capability; an APPLE IPHONE, a SAMSUNG GALAXY, or any other “smart” phone (capable of executing on-board “apps” and, typically, of communicating via the telecommunications infrastructure as well as short-range protocols such as WiFi and Bluetooth); as well as laptops and other devices, such as “smart” watches, capable of communicating via a short-range protocol with a more powerful device such as a tablet or smart phone. Wireless interface 117 may communicate with a user's wireless device 140 via a short-range wireless protocol such as Bluetooth, NFC, or WiFi.

In some implementations, node 100 includes an authentication agent 145 that allows a user to obtain access to restricted data consistent with his privilege level and the security policies of the institution. Authentication agents are known in the art and described, for example, in U.S. Ser. No. 11/294,354, filed Dec. 5, 2005, the entire disclosure of which is hereby incorporated by reference.

FIG. 2 illustrates a location server that also typically includes a processor 202 (e.g., a CPU) and associated system memory 204, a network interface 206, a system bus 225, and one or more non-volatile digital storage elements including a location database 208 and an event database 210. The databases 208, 210 may be stored locally as separate files or disk partitions, or may be stored remotely and accessed via network interface 206. Location database 208 stores records each specifying a node and its most recently determined location, as well as, typically, its distance from other nodes.

System memory 204 includes stored instructions defining an operating system 230 and high-level applications (not shown). In addition, memory 204 may store digital representations 233 of one or more physical layouts—e.g., floor plans—of the institution(s) in which nodes 100 are deployed. That is, location server 200 may be located within a single institution or may manage location services for a plurality of institutions. In the latter case, server 200 may store layout information for all institutions in nonvolatile storage and retrieve appropriate files in response to events as described below. An analysis program 235 implements various location-determination functions, also as described below. These functions include analysis of distance and available paths between nodes and obstructions defining the paths in accordance with layout files 233, which are stored in a format subject to this analysis.

More generally, server 200 may be implemented on any suitable computing platform including a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. During operation, the system memory contains the instructions implementing the functionality described herein. Computers typically include a variety of computer-readable media that can form part of the system memory and be read by the processing unit. By way of example, and not limitation, the system memory may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements, such as during start-up, is typically stored in ROM. RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit. The data or program modules may include an operating system, application programs, other program modules, and program data. The operating system may be or include a variety of operating systems such as Microsoft WINDOWS operating system, the Unix operating system, the LINUX operating system, the Xenix operating system, the IBM AIX operating system, the Hewlett Packard UX operating system, the MACINTOSH operating system, the APACHE operating system, an OPENSTEP operating system or another operating system of platform.

1. GPS-Based Location Determination

Location database 208 may specify a node's location in terms of a room or work area, in terms of absolute (e.g., GPS or other spatial) coordinates, or both. In various embodiments, database 208 maintains a table relating absolute coordinates to informal or named locations meaningful on an institutional level. In this way, if GPS coordinates are specified for a node, the node's record in database 208 can be updated to specify the institutional location. In accordance with embodiments of the present invention, the GPS location of a node is obtained when a user is detected by (e.g., authenticates herself to) the node via a GPS-equipped device 140 using a short-range wireless protocol.

For example, a user may establish a wireless communication channel with the node 100 using a mobile device 140 for purposes of authentication, following an authentication protocol prescribed by the institution's security policy. Authentication agent 145 runs a security process that handles the authentication sequence; this may involve communication with a remote server (e.g., a server that verifies password or biometric information obtained and transmitted by the node). The user's mobile device 140 may run a specialized application for communicating with authentication agent 145 and, for example, obtaining from the user an authentication credential such as a biometric indicium—e.g., reading a fingerprint from the user's thumb when pressed on the device's touchscreen, or reading a vein pattern. During the authentication sequence, location agent 135 obtains GPS data from device 140. (Of course, the functions of agents 135, 145 can be performed by a single application.)

In other implementations, an application running on the user device 140 permits location agent 135 to access GPS information of device 140 whenever communication with the device can be opportunistically established. For example, wireless interface 117 may operate as an NFC reader, which “wakes up” when device 140 is in communication range (e.g., is “woken up” by an NFC tag chip on device 140). Most mobile devices permit their owners to prevent wireless provision of location information, but the device 140 may include an application that is activated when peer-to-peer communication is established with a location agent 135, which the user has given persistent permission to provide (or to allow location agent 135 to access) GPS information during such a peer-to-peer session.

In various embodiments, the conditions under which location agent 135 interrogates the user devices 140 for GPS coordinates are constrained. In some cases, agent 135 may be programmed to always request GPS information from any device 140 with which it establishes communication, following which the GPS coordinates are sent to location server 200. If the node is unlikely to be moved frequently, however, the agent may be programmed to request GPS coordinates only periodically; a highly utilized workstation that is rarely moved, for example, need not have its location updated many times a day as different users log on. Thus, agent 135 may be programmed to obtain GPS coordinates from the next available user device only once during a fixed interval (e.g., a day or a week). Alternatively, agent 135 may operate adaptively based on how often it is moved (i.e., how often the GPS coordinates change from one reading to the next), gradually adjusting the frequency with which new coordinates are obtained to conform to a time-average interval between observed changes. In other embodiments, agent 135 is programmed to request GPS coordinates when it receives an instruction to do so from, for example, location server 200. For example, the node server, rather than agent 135, may keep track of how often devices are moved and set the corresponding update frequencies accordingly.

2. Location Determination without GPS

GPS tracking is not always possible even for devices that are GPS-enabled; for example, GPS often does not work well within buildings. Therefore, in some embodiments, relative spatial locations among a group of nodes are determined based on patterns of user interactivity. These relative spatial locations may suffice in themselves for some purposes, and can also be used to infer absolute spatial coordinates. For example, various implementations may leverage the fact that a user will access more than one node during her workday, and that users tend to walk directly from node to node at approximately the same speed. This type of analysis may be assisted by information obtained from wearable fitness monitors that track, for example, velocity and number of steps taken as explained below.

In one particular implementation, location server 200 monitors user accesses to the various nodes in a facility, and follows the path of each user from node to node as the user approaches or logs on to, and subsequently departs from, a node. For each user, location server 200 computes the amount of time elapsed between successive interactions with (i.e., “proximity events” at) different nodes. Any of various interactions can qualify as a proximity event, depending on device capabilities and implementation preferences. Most simply, a proximity event involves physical interaction between a user and a node 100, e.g., a log-on attempt. In some embodiments, however, the user's presence is detected wirelessly, e.g., a proximity event may be a wireless communication between a node and a user wireless device, generally over a short-distance link; the wireless communication may be detection of the device by NFC or Bluetooth reader circuitry in wireless interface 117. In this way, the user need not interact physically with node 100 to be registered as co-located with the device; and because several people may be in proximity to a device being used by only one person, this approach enables simultaneous tracking of more people and their paths.

Similarly, departure of a user from a node 100 can involve physical interaction (typically the last event or activity registered for the user on the node, e.g., log-off) or moving out of wireless communication range. For accurate time measurements, of course, the same type of proximity event (log-on/log-off, duration of wireless detection) should be used for the arrival and departure events that define an estimated user path between nodes. Because each node 100 typically reports only its own proximity events, it is server 200 that identifies the transitions corresponding to a single individual's travel from one node to another. Because database 210 can be queried by user, it is straightforward to trace any particular user's node transitions and thereby identify the previous node visited.

The elapsed time between a single individual's proximity events at different nodes, if analyzed properly, can indicate the distance between the two nodes, particularly when corroborated by similar proximity events of other individuals. For example, a table of proximity events in event database 210 may contain the following illustrative entries:

Node 1 Node 2 Node 3 Node 4 Node 1 X 1:05:02 0:0:32 0:13:12 Node 2 1:05:02 x 0:0:32 0:13:12 Node 3 x Node 4 x

In the following discussion, cells are referenced by row/column. In the node 2/node 1 cell (and the corresponding node 1/node 2 cell), the first line of the entry indicates successive proximity events for the same individual at nodes 1 and 2 (and no intervening nodes), and the elapsed time between departure from (e.g., the last activity performed on) node 1 and arrival at (e.g., the first activity performed on) node 2—or vice versa, since the order is generally irrelevant—was 1:05:02. The second line indicates that a single individual—who may or may not be the person whose accesses were recorded on the first line—successively accessed nodes 1 and 2 with 32 seconds elapsing between last and first events, respectively, on these nodes. Since this is the minimum amount of time in the cell, it can in appropriate circumstances be considered the approximate travel time between nodes 1 and 2 (since longer times typically will reflect diversions or interruption). What circumstances are appropriate may depend on a desired confidence level, which may itself depend on the number of entries in the cell and/or corroboration among entries. For example, suppose the cell contains few entries but the two or three smallest elapsed times are approximately the same; these similar times corroborate each other and increase the likelihood of a valid result.

To estimate the distance between nodes once an acceptable elapsed-time minimum is identified, various factors may be taken into account—e.g., the average walking speed of users in the institution, the average interval between a last recorded event at a node and when the user actually departs, and the average interval between arrival at a new node and the first recorded event thereon. Although walking speeds can vary greatly depending on a multitude of factors such as height, weight, age, terrain, surface, load, culture, effort, and fitness, the average human walking speed is about 5.0 kilometers per hour or about 3.1 miles per hour.

Once successive proximity events are detected and, if necessary, adjusted as described above, they can be used to compute the approximate distance between the corresponding nodes. For example, if the proximity events involve physical interaction with a node, the above-noted access and departure intervals may be subtracted from the average of the recorded minimum times between successively accessed nodes, and the result multiplied by the average walking speed to obtain a distance estimate. Because the expected departure and arrival intervals and the expected gait are averaged values, accuracy will be improved by using multiple identified minimum times (rather than a single identified time) between successive proximity events, since longer times reflect extraneous factors such as interruptions. It should be understood that any suitable approach to unsupervised learning of the distance between nodes may be employed so long as it accounts for such sources of “noise.”

In some embodiments, location agent 135 is programmed to interact (i.e., sense and exchange data) with fitness tracking devices via wireless interface 117. These devices track physical activities such as, critcially, the number of steps taken or distance covered on foot. With this information it is not necessary to estimate elapsed time based on proximity events at two nodes in order to determine the distance between those nodes. For example, location agent 135 may be programmed to wirelessly check for a fitness device when a user logs in at, or comes within communication range of, a node. If one is found, the agent may download recent activity—e.g., number of steps and average walking speed during the user's last change of location, or, if available, distance covered. When location agent 135 has successfully obtained this data, it may provide it to location server 200. The server 200, in turn, may look up the previous node accessed by the user, thereby providing a direct distance entry, i.e., one that need not be converted based on time and estimated gait. This distance still may not correspond to the actual distance between nodes, since the wearer of the fitness device may not have followed a direct path to the reporting node from the previous node. Once again, consistency among multiple entries, floorplan constraints and/or fitness tracking entries indicating directional changes may be used to identify and eliminate spurious database entries.

It is further possible to sense the presence of a user at a node based on an observed wireless signal strength, rather than in response to log-in or communication event. For example, RSSI 120 can determine the strength of signals in the immediate environment, and if any of these is sufficiently strong to indicate close proximity of the transmitting device, co-location of the registered owner of that device may be inferred. Agent 135 can operate RSSI 120 and detect transitions, i.e., the appearance of a user device when signal strength reaches a threshold level indicative (given the known parameters of the sensed wireless protocol) of close proximity, and the departure of the user from the node when the previously detected, above-threshold signal strength falls below the threshold. Location agent 135 reports these conditions as arrival and departure proximity events to location server 200.

RSSI 120 can also operate to establish correlations between detected signal strengths and user activity. For example, RSSI 120 can measure signal strength when a user logs on and similarly begin tracking signal strength when the user logs out. Over time, these measured values by user and for each node can determine the proper threshold values for approaching and departing users. Further, signal strength can be measured as RSSI 120 detects its peer nodes within range, since all nodes have a wireless interface 117, RSSI 120 and a location agent 135. The measured node-to-node signal strengths can be used to build graph of RSSI dividing boundaries between adjacent nodes. This information, together with the measured approach/departure signal strength, can more accurately determine when a user is approaching or leaving a node.

Since wireless interface 117 can both transmit and receive, ranging can involve the cooperation of the node 100 and the user's device 140. For example, location agent 135 may modulate the transmission power of wireless interface 117, progressively reduce transmission power until it the user's device 140 can no longer detect it. This ranging scheme can be run continuously to determine if the user is approaching or departing from the node 100 based on the monitored transmission power over time. If the user is approaching, the minimum power needed to contact the user's device over time will continue to drop until a lower threshold is reached. Monitoring many devices 140 and correlating them with users who actually logged in will provide a characteristic transmit power boundary to establish who is “close” to the node.

Once the distances between nodes are established, they are stored in location database 208 and can be used to determine the absolute spatial coordinates of the nodes 100 if those coordinates are known for a few of the nodes. Indeed, depending on the degree of knowledge of the institution's interior layout, it may be possible to deduce the institutional or absolute spatial locations of all nodes even if no absolute location coordinates are known in advance, simply by optimizing the fit between observed inter-node distances and the constraints imposed by the known geometry; that is, given enough inter-node distances, there may be only one arrangement of nodes that is physically possible given the stored layout 233. Conventional dynamic-programming techniques and optimization algorithms are available to perform this analysis without undue experimentation. Suitable approaches are described in, for example, Addesso, Bruno & Restaino, “Adaptive localization techniques in wifi environments,” 5th IEEE International Symposium on Wireless Pervasive Computing 289-294 (2010); Altini, Brunelli, Farella & Benini, “Bluetooth indoor localization with multiple neural networks,” 5th IEEE International Symposium on Wireless Pervasive Computing 295-300 (2010); Almaula & Cheng, “Bluetooth triangulator,” Tech. rep., Department of Computer Science and Engineering, University of California, San Diego (2006); Yoo & Kim, “Target Localization in Wireless Sensor Networks Using Online Semi-Supervised Support Vector Regression,” 15 Sensors 12539-12559 (2015); and Reddy & Veloso, “RSSI-based physical layout classification and target tethering in mobile ad-hoc networks,” Proceedings of the 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems 2327-2332 (2011), the entire disclosures of which are hereby incorporated by reference.

Any suitable programming language may be used to implement without undue experimentation the functions described above, including those of location agent 135, with processing responsibility allocated between node 100 and server 200 as desired by the system designer. Illustratively, the programming language used may include assembly language, Ada, APL, Basic, C, C++, C*, COBOL, dBase, Forth, FORTRAN, Java, Modula-2, Pascal, Prolog, Python, RUM and/or JavaScript, for example. Further, it is not necessary that a single type of instruction or programming language be utilized in conjunction with the operation of the system and method of the invention. Rather, any number of different programming languages may be utilized as is necessary or desirable.

Certain embodiments of the present invention were described above. It is, however, expressly noted that the present invention is not limited to those embodiments, but rather the intention is that additions and modifications to what was expressly described herein are also included within the scope of the invention. Moreover, it is to be understood that the features of the various embodiments described herein were not mutually exclusive and can exist in various combinations and permutations, even if such combinations or permutations were not made express herein, without departing from the spirit and scope of the invention. In fact, variations, modifications, and other implementations of what was described herein will occur to those of ordinary skill in the art without departing from the spirit and the scope of the invention. As such, the invention is not to be defined only by the preceding illustrative description. 

What is claimed is:
 1. A method of establishing a location of a device in an institutional space having a physical layout including walkable paths and obstructions, the method comprising the steps of: at a first node having an unknown location, registering a proximity event of a user having an unknown location; subsequently registering a proximity event of the user at a second node physically displaced from the first node; and computationally inferring a location of the first node based on an elapsed time between the proximity events of the user at the first and second nodes, and at least one of (i) the physical layout or (ii) time-separated detections of users at the first and second nodes and other nodes.
 2. The method of claim 1, wherein the location is inferred based on a plurality of first elapsed times each between proximity events of at least one user at the first node and at the second node, a plurality of second elapsed times each between proximity detections of at least one user at the first node and at a third node, and a plurality of third elapsed times each between proximity detections of at least one user at the second node and at a fourth node.
 3. The method of claim 2, wherein, for each of the pluralities of elapsed times, a distance between the corresponding nodes is estimated based on a minimum of the elapsed times.
 4. The method of claim 2, wherein, for each of the pluralities of elapsed times, a distance between the corresponding nodes is estimated based on a plurality of substantially equal elapsed times.
 5. The method of claim 1, wherein the proximity events comprise wireless communication between a node and a fitness device worn by the user.
 6. The method of claim 5, wherein computationally inferring a location of the first node comprises downloading data from the fitness device, the data including a recent average walking speed of the user.
 7. The method of claim 6, wherein computationally inferring a location of the first node further comprises determining, from the downloaded data, when the user began walking from the first node to the second node, when the user arrived at the second node, and whether the user followed an uninterrupted path therebetween.
 8. The method of claim 1, wherein the proximity event at the first node is the user's departure therefrom and the proximity event at the second node is the user's arrival thereat.
 9. The method of claim 8, wherein the time when the user departs from the first node is established by a last recorded user interaction with the first node.
 10. The method of claim 9, wherein the time when the user arrives at the second node is established by detection of the user's proximity to the second node.
 11. The method of claim 9, wherein the time when the user arrives at the second node is established by detection of the user's initial interaction with the second node.
 12. The method of claim 1, wherein the proximity events comprise detecting a received signal strength of a wireless device of the user.
 13. The method of claim 12, wherein the received signal strength is used to determine a departure of the user from the first node and an arrival of the user at the second node.
 14. The method of claim 1, wherein absolute spatial locations of the nodes are inferred.
 15. The method of claim 1, wherein the second node has a known location.
 16. The method of claim 2, wherein none of the nodes has a known location.
 17. The method of claim 16, wherein the inferring step comprises optimizing a fit among estimated distances between pairs of nodes and constraining the locations based on the physical layout.
 18. A system for inferring locations of devices in an institutional space having a physical layout including walkable paths and obstructions, the system comprising: a plurality of nodes, wherein at least some of the nodes have unknown locations; a plurality of wireless user devices; and a location server including a location database, wherein: (a) each of the nodes comprises a wireless interface for interaction with a wireless mobile device of a user, a processor, and a computer memory storing agent instructions for execution by the processor, the agent instructions, when executed, causing the node to register proximity events of users and report the events to the location server, and (b) the location server is configured to receive proximity events of the nodes and, based thereon and on and at least one of (i) the physical layout or (ii) time-separated detections of users at a plurality of the nodes, to computationally infer locations of at least some of the nodes.
 19. The system of claim 18, wherein the location is inferred based on a plurality of first elapsed times each between proximity events of at least one user at a first node and at a second node, a plurality of second elapsed times each between proximity detections of at least one user at the first node and at a third node, and a plurality of third elapsed times each between proximity detections of at least one user at the second node and at a fourth node.
 20. The system of claim 18, wherein, for each of the pluralities of elapsed times, the location server is configured to estimate a distance between the corresponding nodes based on a minimum of the elapsed times.
 21. The system of claim 18, wherein, for each of the pluralities of elapsed times, the location server is configured to estimate a distance between the corresponding nodes based on a plurality of substantially equal elapsed times.
 22. The system of claim 18, wherein the proximity events comprise wireless communication between a node and a fitness device worn by the user.
 23. The system of claim 22, wherein the nodes are configured to download data from the fitness device, the data including a recent average walking speed of the user.
 24. The system of claim 23, wherein the location server is configured to determine, from the downloaded data, when a user began walking from a first node to a second node, when the user arrived at the second node, and whether the user followed an uninterrupted path therebetween.
 25. The system of claim 18, wherein proximity events are user departures from a node and arrivals at another node.
 26. The system of claim 25, wherein the time when the user departs from a first node is established by a last recorded user interaction with the first node.
 27. The system of claim 26, wherein the time when the user arrives at a second node is established by detection of the user's proximity to the second node.
 28. The system of claim 26, wherein the time when the user arrives at the second node is established by detection of the user's initial interaction with the second node.
 29. The system of claim 18, wherein the proximity events comprise detection, by the wireless interfaces of the nodes, of a received signal strength of a wireless device of a user.
 30. The system of claim 29, wherein the location server is configured to use the received signal strength to determine a departure of the user from a first node and an arrival of the user at a second node.
 31. The system of claim 18, wherein the location server is configured to infer absolute spatial locations of the nodes.
 32. The system of claim 18, wherein the location server is configured to optimize a fit among estimated distances between pairs of nodes and constrain the locations based on the physical layout. 